const path = require('path')
const fs = require('fs')

const basePath = '代码目标路径';

function mapDir(dir, callback, finish) {
  fs.readdir(dir, function(err, files) {
    if (err) {
      console.error(err)
      return
    }
    files.forEach((filename, index) => {
      let pathname = path.join(dir, filename)
      fs.stat(pathname, (err, stats) => { // 读取文件信息
        if (err) {
          console.log('获取文件stats失败')
          return
        }
        if (stats.isDirectory()) {
          mapDir(pathname, callback, finish)
        } else if (stats.isFile()) {
          // 文件夹中需要转换代码名称包括
          if (['.json', '.less', '.html', '.ts'].includes(path.extname(pathname))&&!['.spec'].includes(path.extname(pathname))) {  // 排除 目录下的 json less 文件
            fs.readFile(pathname, (err, data) => {
              console.log(pathname);
              if (err) {
                console.error(err)
                return
              }
              callback && callback(data)
            })
          }else {
            return
          }
        }
      })
      if (index === files.length - 1) {
        finish && finish()
      }
    })
  })
}

mapDir(
  basePath,
  function(file) {
    // console.log('TCL: file', file.toString())
    // 读取文件后的处理
    // fs.writeFile('./result.txt')
    fs.appendFile('./result.txt', file, 'utf8', function(err){
      if(err) throw err;
      // console.log('write JSON into TEXT');
    });
  },
  function() {
    // console.log('xxx文件目录遍历完了')
  }
)

